#  使用 for()循环打印 4种不同形式的九九乘法表

#  1.第一种，左正三角形
for i in range(1, 10):  # 外层 for()循环控制自上而下的 1~9行,i是循环变量
    for j in range(1, i + 1):  # 内层 for()循环控制每行显示的内容从1~i,j是循环变量
        # 使用format()进行格式化输出，{}表示占位，end=' '表示每打印一个乘式不换行
        print("{}*{}={:<4}".format(j, i, j * i), end=' ')
    print("")  # print("")表示每一行打印完换行
print("==" * 40)  # 打印一行分隔线


# 2.第二种，左倒三角形
for i in range(9, 0, -1):  # 外层 for()循环控制自上而下的 9~1行,i是循环变量
    for j in range(1, i + 1):  # 内层 for()循环控制每行显示的内容从1~i,j是循环变量
        # 使用format()进行格式化输出，{}表示占位，end=' '表示每打印一个乘式不换行
        print("{}*{}={:<4}".format(j, i, j * i), end=' ')
    print("")  # print("")表示每一行打印完换行
print("==" * 40)  # 打印一行分隔线


# 3.第三种，右正三角形
for i in range(1, 10):  # 最外层 for()循环控制自上而下的 1~9行，i是循环变量
    # 中间层 for()循环控制每行左侧需要填充的空白区个数，自上而下是 8~0个，j是循环变量
    for j in range(1, 10 - i):
        print("        ", end=" ")  # 每行左侧打印空白区
    for k in range(i, 0, -1):  # 最内层 for()循环控制每行显示的内容从i~1，k是循环变量
        # 使用format()进行格式化输出，{}表示占位，end=' '表示每打印一个乘式不换行
        print("{}*{}={:<4}".format(k, i, k * i), end=' ')
    print("")  # print("")表示每一行打印完换行
print("==" * 40)  # 打印一行分隔线


# 4.第四种，右下三角形
for i in range(9, 0, -1):  # 最外层 for()循环控制自上而下的 9~1行，i是循环变量
    # 中间层 for()循环控制每行左侧需要填充的空白区个数，自上而下是 0~8个，j是循环变量
    for j in range(1, 10 - i):
        print("        ", end=' ')  # 每行左侧打印空白区
    for k in range(i, 0, -1):  # 最内层 for()循环控制每行显示的内容从i~1，k是循环变量
        # 使用format()进行格式化输出，{}表示占位，end=' '表示每打印一个乘式不换行
        print("{}*{}={:<4}".format(k, i, k * i), end=' ')
    print("")  # print("")表示每一行打印完换行
print("==" * 40)  # 打印一行分隔线


# 使用 while()循环打印4种不同形式的九九乘法表

# 1.第一种，左正三角形
i = 1  # i作为外层 while()循环的循环变量，初始值为1，控制自上而下的 1~9行
while i <= 9:  # 满足i<=9进入循环
    j = 1  # j作为内层 while()循环的循环变量，控制每行显示的内容从1~i
    while j <= i:  # 满足j<=i进入循环
        # 使用format()进行格式化输出，{}表示占位，end=' '表示每打印一个乘式不换行
        print("{}*{}={:<4}".format(j, i, j * i), end=' ')
        j += 1  # 内层循环每循环一次 j的值+1
    print("")  # print("")表示每一行打印完换行
    i += 1  # 外层循环每循环一次 i的值+1
print("==" * 40)  # 打印一行分隔线


# 2.第二种，左倒三角形
i = 9  # i作为外层 while()循环的循环变量，初始值为9，控制自上而下的 9~1行
while i >= 1:  # 满足i>=1进入循环
    j = 1  # j作为内层 while()循环的循环变量，控制每行显示的内容从1~i
    while j <= i:  # 满足j<=i进入循环
        # 使用format()进行格式化输出，{}表示占位，end=' '表示每打印一个乘式不换行
        print("{}*{}={:<4}".format(j, i, j * i), end=" ")
        j += 1  # 内层循环每循环一次 j的值+1
    print("")  # print("")表示每一行打印完换行
    i -= 1  # 外层循环每循环一次 i的值-1
print("==" * 40)  # 打印一行分隔线


# 3.第三种，右正三角形
i = 1  # i作为最外层 while()循环的循环变量，初始值为1，控制自上而下的 1~9行
while i <= 9:  # 满足i<=9进入循环
    # 中间层 while()循环控制每行左侧需要填充的空白区个数，自上而下是 8~0个，j是循环变量
    j = 9 - i
    while j >= 1:  # 满足j>=1进入循环
        print("        ", end=' ')  # 每行左侧打印空白区
        j -= 1
    # 最内层 while()循环控制每行显示的内容从i~1，k是循环变量
    k = i
    while k >= 1:  # 满足k>=1进入循环
        # 使用format()进行格式化输出，{}表示占位，end=' '表示每打印一个乘式不换行
        print("{}*{}={:<4}".format(k, i, k * i), end=' ')
        k -= 1
    print("")  # print("")表示每一行打印完换行
    i += 1
print("==" * 40)  # 打印一行分隔线


# 4.第四种，右倒三角形
i = 9  # i作为最外层 while()循环的循环变量，初始值为9，控制自上而下的 9~1行
while i >= 1:  # 满足i>=1进入循环
    # 中间层 while()循环控制每行左侧需要填充的空白区个数，自上而下是 0~8个，j是循环变量
    j = 9 - i
    while j >= 1:  # 满足j>=1进入循环
        print("        ", end=' ')  # 每行左侧打印空白区
        j -= 1
    # 最内层 while()循环控制每行显示的内容从i~1，k是循环变量
    k = i
    while k >= 1:  # 满足k>=1进入循环
        # 使用format()进行格式化输出，{}表示占位，end=' '表示每打印一个乘式不换行
        print("{}*{}={:<4}".format(k, i, k * i), end=' ')
        k -= 1
    print("")  # print("")表示每一行打印完换行
    i -= 1
print("==" * 40)  # 打印一行分隔线
